home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / edit / aaem95ma.zip / README < prev    next >
INI File  |  1995-03-06  |  30KB  |  462 lines

  1. [This file is README]
  2.   This is the 5 Mar 1995 version of the PC screen text editor AAEMACS written by
  3. A.Appleyard, E28d, Materials Science, UMIST, Manchester 1, England (email:
  4. A.APPLEYARD@FS2.MT.UMIST.AC.UK) as .EXE binary and for compiling by Gnu C++, so
  5. needs an 80386-based IBM compatible PC, and will not run under Windows. It needs
  6. real mode, not V86 mode. For information on Gnu C++ (alias djgpp), contact
  7. Mr.Delorie (DJ@DELORIE.MV.COM). The files EMACS.EXE and FINDMODE.EXE each
  8. include a copy of the Gnu C++ loader BIN\GO32.EXE, so matter including these
  9. .EXE files should not change hands in exchange for money, only free.
  10. -------------------------------------------------------------------------------
  11. Disclaimer: This software is distributed <without any warranty>; without even
  12. the implied warranty of <merchantability> or <fitness for a particular purpose>.
  13. In particular, I am not responsible for the consequences of other people
  14. altering a copy of the source form and then recompiling and running the result.
  15. --------------------------------------------------------------------------------
  16. If you want to try to port AAEMACS to other C++ compilers, I <<<CAN'T>>>
  17. guarantee the results! In particular, be wary wherever I have put a comment
  18. starting with '/****'.
  19. -------------------------------------------------------------------------------
  20. AAEMACS includes these files:-
  21. -- information files:-
  22. MACROS.HLP      information file about format of AAEMACS macro files
  23. README          this file
  24. WISHLIST        things that I may get around to doing
  25. EXAMPLES        examples
  26. HISTORY         list of past alterations and corrections
  27. -- files needed to run AAEMACS:-
  28. DICT            dictionary for spelling checker
  29. EMACS.EXE       AAEMACS assembled and ready for running
  30. FINDMODE.CC     Gnu C program to find current and possible screen modes
  31. FINDMODE.EXE    ditto, compiled
  32. HELP            one line of information for each bound key
  33. HELP.BIG        longer information for all user subroutines and bound keys
  34. INFO.DAT        some information about your PC that AAEMACS needs
  35. -- files needed to compile AAEMACS:-
  36. ASSEMBLE.BAT    to link AAEMACS together after compiling its parts
  37. COMPILAL.BAT    to compile all parts of AAEMACS (I don't use MAKE)
  38. DISPLAY.CC      Emacs source: subroutines to display file on screen
  39. EM.CC           Emacs source: lots of little subroutines
  40. EM.H            Emacs source: matter #include'd by all parts
  41. KEYF.CC         Emacs source: subroutines which are bound to keys
  42. CC.CC        Emacs source: more subroutines which are bound to keys
  43. MACROS.CC       Emacs source: re macros
  44. MAIN.CC         Emacs source: main() and obey()
  45. -------------------------------------------------------------------------------
  46. [To install AAEMACS]
  47. As AAEMACS was compiled by Gnu C, the PC's CPU must be in REAL mode. So, AAEMACS
  48. won't run if e.g. \CONFIG.SYS contains a line 'device=\dos\himem.sys' to reserve
  49. areas of store and reset mode for Windows.
  50. Create a directory to keep AAEMACS on. CHDIR to that directory.
  51. Copy the "files needed to run AAEMACS" onto that directory.
  52. In your \AUTOEXEC.BAT file insert this line ('AAEMACS' must be UPPERCASE):-
  53.   SET AAEMACS=C:\AM
  54. (with C:\AM replaced by drive & name of the directory where you put AAEMACS)
  55.  
  56. Alter your copy of file INFO.DAT according to peculiarities of your PC thus:-
  57. Lines 1 to end: one line for each alt and special key code (i.e. codes that the
  58. interrupt 'AH=7, AL=0, int 21hex' returns first 0 then a value for) that your
  59. keyboard can read. (There is a list below of what these codes return on my PC:
  60. check this list with your own keyboard's specifications in its manual):-
  61.   chars  1 to  3: decimal value returned by key
  62.   chars  5 to 19: name to refer to key by. (Letters & digits only, letter first)
  63.   chars 21 to 24: short code for this key (|=shift, ^=ctrl, *=alt, !=special)
  64.  
  65. If you want/need to recompile AAEMACS yourself:-
  66. Copy also the "files needed to compile AAEMACS" onto your directory for AAEMACS.
  67. In line 2 of your copy of ASSEMBLE.BAT, replace 'c:\gcc\bin\go32.exe' by the
  68.   full filename with drive and directory of your copy of Gnu C's file GO32.EXE .
  69. Type COMPILAL
  70.   This creates the object files CC.O DISPLAY.O EM.O KEYF.O MAIN.O MACROS.O
  71. Type ASSEMBLE
  72.   This links the object files, creating binary file EMACS.EXE (I don't use MAKE)
  73. -------------------------------------------------------------------------------
  74. [Calling AAEMACS]
  75. (Replace C:\AM\EMACS by whatever is needed to call your copy of EMACS.EXE)
  76. To edit file xxx, type C:\AM\EMACS xxx
  77. If xxx is omitted, AAEMACS shows a menu of all files in the current directory.
  78. If xxx is a directory, AAEMACS shows a menu of all files in that directory.
  79. -------------------------------------------------------------------------------
  80. [Setting up a quick way to call AAEMACS]
  81. On your system macro directory create a file \DOS\EM.BAT containing this line:-
  82.   %AAEMACS%\EMACS %1 %2 %3 %4 %5 %6 %7 %8
  83. (And set AAEMACS in your AUTOEXEC.BAT as above.) Then:-
  84. Typing   EM       will enter AAEMACS with menu of files in current directory.
  85. Typing   EM xxx   will enter AAEMACS to edit the file xxx.
  86. -------------------------------------------------------------------------------
  87. (Typing a printable key by itself always inserts or overlays that character.)
  88. Short information about each keybinding is in file HELP .
  89. Full information about each subroutine and keybinding is in file HELP.BIG .
  90. Typing ctrl-_ gets help according to what key you type next:-
  91. ?   this information
  92. a   all lines in file HELP which contain a specified string
  93. d   help about use of special keys in directory menus
  94. i   help about use of special keys in incremental search
  95. L   explanation of symbols used in help information
  96. l   long help about any one subroutine
  97. m   help about magic characters
  98. o   help about allowed operator uses in macros
  99. r   help about the replace commands
  100. s   help about use of alt- and special keys when inputting a string argument
  101. (Any other keysequence gets one-line help about that keysequence)
  102. One-line help output overwrites the mode line. The next keystroke is treated as
  103.   a normal AAEMACS command and also refreshes the mode line.
  104. Other help output overwrites the screen display. Afterwards: ctrl-_ gets more
  105.   help, any other character merely exits from 'help'
  106. -------------------------------------------------------------------------------
  107. Effect of alt- and special keys in incremental search:-
  108. insert     look again for this same string
  109. delete     cancel effect of typing last displayed character
  110. altend     abort search
  111. pagedown   exit from search
  112. altret     look for CR stored as byte (not as bit) in AAEMACS's line image
  113. ret or ctrl-J or ctrl-M    look for end-of-line
  114. (NB. The incremental search string can't be > 64 chars long)
  115. -------------------------------------------------------------------------------
  116. Effect of replies to 'shall I replace here?' in replace:-
  117. space      yes and look for the next replacing
  118. N  or  n   no  and look for the next replacing
  119. .          yes and exit
  120. altend     no  and exit
  121. end        no  and exit and leave the cursor here
  122. -------------------------------------------------------------------------------
  123. Special keys as used when inputting string arguments:-
  124. printing & control chars & space & newline go into the string argument
  125. alt-B          then keysequence bound to buffer, inserts that buffer's name
  126. alt-C          inserts the current buffer's name
  127. alt-K          then keysequence: inserts that keysequence's name
  128. alt-R          in 2nd arg of replace commands, insert 1st arg just entered
  129. alt-Y          insert last kill
  130. delete         delete this character (at end of string, previous character)
  131. alt_delete     delete previous character
  132. left-arrow     go left one character
  133. right-arrow    go right one character
  134. home           go to start of string
  135. end            go to end of string. If first keystroke, do not lose old string
  136. alt_end        abort the command that asked for this string argument
  137. ctrl_tab       menu to input a character
  138. F1             change char from normal (cyan) to magic (yellow) or vice-versa
  139. F2             ditto but previous character (usually the character just typed)
  140. F3             start or stop typing chars as magic
  141. pagedown       accept string as it is
  142. alt_ret        put a ctrl-M (CR) (carriage-return) into the string as a byte
  143. ret or ctrlJ or ctrlM    put a ctrl-J (LF) (end-of-line) into the string
  144. -------------------------------------------------------------------------------
  145. Effect of alt- and special keys in directory-menus:-
  146. up-arrow   move pointer up one entry in menu
  147. down-arrow move pointer down one entry in menu
  148. pageup     move pointer up a screenful in menu
  149. pagedown   move pointer down a screenful in menu
  150. insert     choose new file (you will be asked for its name)
  151. ctrlinsert create new directory (you will be asked for its name)
  152. delete     delete this PC file or directory (if directory, must be empty)
  153. home       go to parent directory
  154. alt-K      copy this directory to kill ring (with alt-O & with ctrl-X ctrl-F)
  155. alt-R      rename file (not buffer)
  156. alt-del    drop this file's buffer, if it has one
  157. ctrl-N     sort by name
  158. ctrl-S     sort by size
  159. ctrl-D     sort by date
  160. ctrl-X     don't sort
  161. altend     abort
  162. return     choose this file                 or left mouse button
  163. F1         get submenu of these commands    or right mouse button
  164. -------------------------------------------------------------------------------
  165. Effect of magic characters (which show as bright yellow) in searching:-
  166. .          any one character except LF
  167. ,          any one letter or number or _
  168. space      one or more spaces and/or tabs   (Note how magic space is shown)
  169. tab        one or more spaces and/or tabs and/or LF's
  170. |          separates alternatives
  171. [     ]    start & end of a set of alternatives
  172. #          any one character not a letter or number or '_'
  173. \          beginning or end of file
  174. /          LF or beginning or end of file
  175. {     }    set start & end of 'string found' (default = all matched chars)
  176. lowercase letter       uppercase or lowercase of that letter
  177. =          the rest of the current line (not any LF at its end)
  178. Magic search is quicker if the first character in the search string is not magic
  179. -------------------------------------------------------------------------------
  180. Note: When AAEMACS writes a buffer to an existing file, it overwrites the file
  181. at once. It does not 'create a new file, then delete the old file'. Therefore:-
  182. (a) IMPORTANT: Breaking in (e.g. by typing ctrl-C) during writing a file loses
  183.     both old and new forms of the file. Always keep backup copies of files!
  184. (b) Unlike in some emacses, there does not have to be enough spare disk space
  185.     for the old and new forms of the file to exist at the same time. But if the
  186.     new version is longer than the old version and thus overfills the disk, you
  187.     have lost the old version and not got all the new version. Keep backups!
  188. (c) The file's directory's entries stay in the same order.
  189. (d) AAEMACS does not automatically save old versions of files.
  190.     But you should separately keep your own security copies of files anyway,
  191.     in case your computer goes wrong or gets a virus or whatever.
  192.  
  193. AAEMACS uses colours thus:-
  194. white                   ordinary buffer display
  195. red                     mostly for fault remarks
  196. magenta background      matter just yanked or moved; matter just found by search
  197. cyan                    information; matter being input that a subroutine wanted
  198. yellow                  magic chars in matter being input that a subr wanted
  199. orange, yellow          menus etc that overlay the screen display
  200. red arrowheads          (in fold-long-lines mode) here this line is folded
  201.      (ascii 17 & 16)    (otherwise) here this line goes off the screen
  202.  
  203.   When replying (in cyan) to a subroutine question:-
  204.   At the start the reply buffer contains whatever was in it before (perhaps with
  205. trailing spaces: beware: typing 'end' key will show where any trailing spaces
  206. finish); and this matter becomes the reply if the reply is terminated at once.
  207. The reply buffer is emptied when the first key is pressed as part of the current
  208. reply, unless that key is 'end'. Magic characters show as bright yellow.
  209.   If a filename is wanted, inputting an empty reply gets a menu of the buffers
  210. (when in that menu, the delete key removes an unwanted buffer (not its file)),
  211. and inputting an '=' by itself means "the buffer that the cursor is in".
  212.   For more information, type ctrl-_ then 's' in AAEMACS
  213.   Attempt to access a directory as if it was a file, gets a menu of all the
  214. files in that directory. In that menu, at the left ends of the lines, 'o' means
  215. that that file has a buffer, and '*' that that file has a buffer which has been
  216. changed since last time it was read or written. It does not show buffers that
  217. have no file of the same name.
  218. -------------------------------------------------------------------------------
  219. [MODES]
  220.   The subroutine 'modemenu' (bound to altM) can select between these modes:-
  221. -tab: shown as one char / obeyed (tab positions every 8 chars) / both
  222. -going off end of line: goes to next line / appends spaces to line
  223. -typed char: inserted / overlays, cursor moves / overlays, cursor stays still
  224. -auto newline on typing long text lines?: yes / no
  225. -in search, ignore case of letters?: yes / no
  226. -line too long for screen: show the columns round the cursor / fold long lines
  227. -skip nonword chars after skipping word?: forwards / backwards / neither / both
  228. Each buffer's modes are stored separately.
  229. -------------------------------------------------------------------------------
  230. [CARRIAGE-RETURN AND LINEFEED (CR and LF) (ctrl-M and ctrl-J)]
  231.   These complications are because: the usual end-of-line key (RET) returns CR
  232. not LF; PCs store text end-of-line as CR LF; most people want to treat CR LF as
  233. one entity 'end of line' and not to see either shown visibly at each line end.
  234.   (But ctrl-RET returns LF.)
  235.   Lines are assumed to end in LF or CR LF. This CR and LF are not in AAEMACS's
  236. line images as characters; absence of this CR is shown by setting a bit. On my
  237. PC CR shows as a single music note, and LF as a slab with a circle on. (Double
  238. music note is ctrl-N.) In text on the screen the LF is only shown if the line's
  239. 'no CR' bit is set. Else the final CR is shown in these cases:-
  240.     if the line ends in space or tab or ascii-0 or ascii-255, to show them;
  241.     if the line is empty, to show trailing empty lines;
  242.     if the end-of-line is the beginning or end of a coloured section of text;
  243.     if the line ends in another CR.
  244.   If both CR and LF are displayed, that CR is in AAEMACS as a character and that
  245. line has a 'no CR' bit. This arises from separate CR and LF coming together.
  246.   In cyan replies typed to questions asked by keystroke subroutines, end-of-line
  247. is shown as LF, which in ordinary searching matches any end-of-line and ignores
  248. the 'no CR' bit.
  249.   'ctrlQ ctrlM' or 'ctrlQ ret' inserts ctrlM (CR) by itself.
  250.   'ctrlQ ctrlL' inserts LF without CR (i.e. new line with the 'no CR' bit set).
  251.   'alt J' sets the 'CR' bit at all ends-of-lines in the region.
  252.   'esc J' clears the 'CR' bit at all ends-of-lines in the region.
  253.   AAEMACS displays the end of a file as if there was an extra end-of-line there;
  254. but AAEMACS search commands will not find that extra end-of-line.
  255.   AAEMACS does not supply a missing CR or LF at end of file on writing to file.
  256.   Note that (at least with PC Gnu C) the C '\n' == 10 (LF) and not 13 (CR).
  257.   Search runs quicker if the first character in the search string is LF
  258. -------------------------------------------------------------------------------
  259. [SPELLCHECKER]
  260.   AAEMACS has a spelling checker. Its dictionary file is directly readable; I am
  261. not responsible for the results of any attempt at editing it yourself. Words
  262. found during scanning can be written to a space called the appendix, which is
  263. also used for work checking. It is controlled by the subroutines 'checkspelling'
  264. (bound to alt-I), 'getappendix', 'putappendix', 'emptyappendix', which see in
  265. HELP.BIG . Its dictionary is made more compact by noting how to form derivatives
  266. from each root word rather than storing every derivative separately. To merge
  267. 'putappendix''s output into an (already sorted) dictionary, use 'mergefile'.
  268. -------------------------------------------------------------------------------
  269. [MOUSE]
  270.   AAEMACS uses the mouse, if the PC's mouse driver has already been loaded.
  271. Pressing the mouse buttons, releasing the mouse buttons, and moving the mouse,
  272. are treated logically as 7 extra keyboard special keys. Note:-
  273.   (1) Some mouse drivers ignore the middle mouse button.
  274.   (2) Some mouse drivers think that the right button of a 2-button mouse is the
  275. middle button.
  276.   (3) In all predefined AAEMACS mouse commands the middle button does the same
  277. as the right button.
  278.   (4) In AAEMACS a double-click is two clicks: there is no time limit.
  279.   (5) Warning: some mouse drivers misbehave in screen text modes other than the
  280. usual 80*25 characters. This fault is in the PC's mouse driver, not in AAEMACS.
  281. If abort-to-DOS occurs in the mouse driver in AAEMACS, it leaves the PC's stack
  282. funny, and you must reboot to clear the condition.
  283.   AAEMACS uses the mouse in:-
  284.   - As a command in ordinary mode:-
  285.     - Right button (or middle button) gets the green menu of commands.
  286.     - Left button gets various special commands: see below.
  287.     - Combination commands such as `esc rightbutton' are possible.
  288.   - Directory menu: left button selects a menu entry; right button gets a cyan
  289.     submenu (in it, left button selects, right button backs out) of the main
  290.     directory menu's special commands.
  291.     Mousing here will only go to the first 2048 entries in each directory.
  292.   - Menu of buffers: left button selects; right button asks for a filename which
  293.     is not in the list.
  294.   - The green menu of commands: left button selects, right button backs out;
  295.     left button means the same as Return when it asks for the numeric argument.
  296.   - The menu of the 256 PC characters: left button selects, right button exits
  297.     without selecting.
  298.   - `Literal character' (bound to ctrl-Q): right button gets menu of characters.
  299.   - Asking for a file name: any button as first keystroke gets directory menu.
  300.   - The menu of buffer modes: left button or Return rotates each line.
  301.   - Asking for a string: moving the mouse moves the cursor; if it was wanting a
  302.     filename, left button before you type anything gets a menu of filenames.
  303.   - In yes/no questions: moves cursor;
  304.     left button = whichever alternative the cursor is on, right button = NO.
  305.  
  306.   Clicking the left button in ordinary mode gets into `mousing mode', in which:-
  307.   (1) `m' appears at the right end of the info line.
  308.   (2) The mouse can only reach the first 2048 characters in each line.
  309.   (3) The mouse can't move more than 1024 lines up or down without a key or
  310.       button being pressed.
  311.   (4) Moving the mouse about moves the cursor.
  312.   (5) `esc', or clicking the left button, exits to ordinary mode.
  313.   (6) On dragging the left button, releasing it sets that buffer's mark 1 (top
  314.       of stack of marks) to where the cursor was when the left button was
  315.       pressed, and that buffer's mark 2 to where the cursor is now. From mark 1
  316.       to mark 2 is the `mousing region'. Dragging is treated as clicking here if
  317.       the left button is released at the same place where it was pressed.
  318.   (7) Clicking the right button gets into a small menu where:-
  319.       - The mousing region shows magenta.
  320.       - `D' deletes the mousing region.
  321.       - `M' moves the mousing region to where the cursor is.
  322.       - `C' copies the mousing region to where the cursor is.
  323.       - `E' exits from the small menu and does nothing.
  324.       - Clicking the right button again gets the green menu of commands.
  325.   (8) Mouse operations may not be recorded properly by "record a macro".
  326.   (9) When moving the mouse, the cursor will not necessarily be exactly at the
  327.       mouse if the mouse is off the end of a line, or within spaces used to
  328.       represent a tabulate character, or on a red arrowhead showing that a line
  329.       is split. All key and button operations put the mouse at the cursor.
  330. -------------------------------------------------------------------------------
  331. [Miscellaneous]
  332.   AAEMACS now has a menu of subroutines, called by alt=
  333.   Please tell me if you get any red fault remarks starting with "BUG:".
  334.   Do <<NOT>> type ctrl-C ahead, as this will cause irretrievable breakin.
  335. Sorry, but this is a feature of Gnu C that I can't do anything about.
  336.   AAEMACS can store macros on files (macrofiles). It does not use the mouse yet.
  337.   All 256 characters display as that PC character, e.g. ctrl-A as a smileface.
  338. (At least on my PC) ascii-0 and ascii-255 display as space: beware.
  339.   (Typing   ctrl-Q ctrl-tab   gets a menu of all the PC printing characters.)
  340.   In the mode line at the bottom of each buffer window: a '*' at the left end
  341. means that that buffer has been altered since it was last written to its file; a
  342. video-reverse (magenta background) block at the right end (only in the current
  343. buffer's window) means that AAEMACS is waiting for you to press a key.
  344.   The effect of pressing a key sequence which is bound to a buffer:-
  345. arg>0, or no arg: the current window switches to the key's buffer.
  346. arg=0: a copy of the key's buffer is inserted at the cursor.
  347. arg<0: current window is split between its current buffer and the key's buffer.
  348.   Two windows can't display the same buffer.
  349.   (This much reduces the thickets of extra programming that bugs can lurk in.)
  350.   'Esc letter' is not necessarily treated the same as alt-letter; but an unbound
  351. keysequence with 'esc letter' is treated as the corresponding alt-letter.
  352.   Uppercase and lowercase are treated the same when typing a key with alt or
  353. ctrl or after keystrokes such as 'esc' and 'ctrlX' to complete a key sequence.
  354.   Kill after kill with nothing between, appends to the same kill ring member.
  355. (But not successive calls of a macro which contains only a kill.)
  356.   The kill ring holds 16 members.
  357.   Incomplete key sequences show in magenta at the bottom of the current window.
  358.   Each buffer's mark stack can hold up to 16 marks.
  359.   Mark 999 = where the cursor was before the last command call, so, after acci-
  360. dentally pressing `end', `esc 999 ctrlX ctrlX' goes back where you were before.
  361.   The first line and the first character in a line are the 1st, not the 0th.
  362.   AAEMACS uses Gnu C's virtual store paging, so it can edit very big files.
  363.   ALT with the numbers above QWERTYUIOP input an argument as stated in HELP etc.
  364.   ALT with the right keypad numbers send the character (but not ascii-0) whose
  365. ascii value is entered modulo 256 as decimal thus, e.g. ALT-2 ALT-6 is treated
  366. as ctrl-B ctrl-F if ALT is released between the 2 and the 6, else as ctrl-Z.
  367. This is a PC DOS feature and not part of AAEMACS.
  368.   A buffer's name is the full form (with drive & directory) of its file's name.
  369.   A buffer whose name is not a legal PC filename, has no file.
  370.   End of sentence is '.' or '!' or '?' with EOL or space or tab after.
  371.   A line empty or starting with space or tab is treated as start of paragraph.
  372.   The keystrokes 'esc' and 'ctrl-X' start 2-keystroke sequences.
  373.   The subroutines in macrofiles can only take strings and numbers as arguments.
  374.   In 'ctrlX =' output, e.g. '17(24)' means 'this line has 17 characters which
  375. are here displayed as 24 characters due to obeying tabs.'.
  376.   AAEMACS does not stop reading on finding ctrl-Z in a file that it is reading.
  377. The file is read as binary; then ctrl-J (LF) is treated as end-of-line, and one
  378. final ctrl-M (CR) (if present) in each line is treated specially as above.
  379.   The right end character of the mode line of the current window counterchanges
  380. its colors when AAEMACS is waiting for the user to type a character.
  381.   The subroutine cccmode goes into or out of a mode where the character at the
  382. cursor is counterchanged, as laptops' cursors are sometimes hard to see.
  383.   When inputting a numeric argument with esc or alt and digits:-
  384. Do not use alt with the right keypad digits, for the reason stated hereinabove.
  385. The first 'digit' can be the minus: that specifies negative argument.
  386. esc minus or alt-minus with no digits means -1, not error as with some emacses;
  387. also e.g. 'esc minus 2' or 'alt-minus alt-2' produces -2 correctly even though
  388. a cyan '-1' appears before typing the '2'.
  389.   When recording a macro:
  390.     Commands that cause failure messages are not recorded.
  391.     Incremental search is recorded as ordinary search.
  392.   If EMACS.EXE fails with "can't open file c:\gcctemp\----" or similar, call
  393. the DOS command 'MAKEDIR C:\GCCTEMP' (or whatever) and call EMACS.EXE again.
  394.   The file EM.INF may be some help in understanding the source form.
  395.   In search-and-replace, and in calling a macro N times, ctrl-alt-shift (using
  396. the left shift key) pressed all at once terminates repetition.
  397.   FINDMODE.EXE:-
  398.   If called with no argument, says what screen modes your computer is in.
  399.   If called with no argument, lists what screen modes your computer has (in hex)
  400.   If called with a hexadecimal number as argument, sets the screen to that mode
  401. if possible.
  402. -------------------------------------------------------------------------------
  403. [Codes returned by my PC's keyboard for the alt and special keys]
  404. hex  dec  key              hex  dec  key              hex  dec  key
  405. 0x01   1  alt esc          0x03   3  ctrl 2           0x0e  14* alt bksp
  406. 0x0f  15  shift tab        0x10  16* alt q            0x11  17* alt w
  407. 0x12  18* alt e            0x13  19* alt r            0x14  20* alt t
  408. 0x15  21* alt y            0x16  22* alt u            0x17  23* alt i
  409. 0x18  24* alt o            0x19  25* alt p            0x1a  26  alt [
  410. 0x1b  27  alt ]            0x1c  28  alt ret          0x1e  30* alt a
  411. 0x1f  31* alt s            0x20  32* alt d            0x21  33* alt f
  412. 0x22  34* alt g            0x23  35* alt h            0x24  36* alt j
  413. 0x25  37* alt k            0x26  38* alt l            0x27  39  alt ;
  414. 0x28  40  alt '            0x29  41  alt `            0x2b  43  alt #
  415. 0x2c  44* alt z            0x2d  45* alt x            0x2e  46* alt c
  416. 0x2f  47* alt v            0x30  48* alt b            0x31  49* alt n
  417. 0x32  50* alt m            0x33  51  alt ,            0x34  52  alt .
  418. 0x35  53  alt /            0x37  55  alt pad *        0x3b  59  f1
  419. 0x3c  60  f2               0x3d  61  f3               0x3e  62  f4
  420. 0x3f  63  f5               0x40  64  f6               0x41  65  f7
  421. 0x42  66  f8               0x43  67  f9               0x44  68  f10
  422. 0x47  71* home             0x48  72* uparrow          0x49  73* page-up
  423. 0x4a  74  alt pad -        0x4b  75* leftarrow        0x4c  76  pad5
  424. 0x4d  77* rightarrow       0x4e  78  alt pad +        0x4f  79* end
  425. 0x50  80* downarrow        0x51  81* page-down        0x52  82* insert
  426. 0x53  83* delete           0x54  84  shift f1         0x55  85  shift f2
  427. 0x56  86  shift f3         0x57  87  shift f4         0x58  88  shift f5
  428. 0x59  89  shift f6         0x5a  90  shift f7         0x5b  91  shift f8
  429. 0x5c  92  shift f9         0x5d  93  shift f10        0x5e  94  ctrl f1
  430. 0x5f  95  ctrl f2          0x60  96  ctrl f3          0x61  97  ctrl f4
  431. 0x62  98  ctrl f5          0x63  99  ctrl f6          0x64 100  ctrl f7
  432. 0x65 101  ctrl f8          0x66 102  ctrl f9          0x67 103  ctrl f10
  433. 0x68 104  alt f1           0x69 105  alt f2           0x6a 106  alt f3
  434. 0x6b 107  alt f4           0x6c 108  alt f5           0x6d 109  alt f6
  435. 0x6e 110  alt f7           0x6f 111  alt f8           0x70 112  alt f9
  436. 0x71 113  alt f10          0x73 115  ctrl leftarrow   0x74 116  ctrl rightarrow
  437. 0x75 117  ctrl end         0x76 118  ctrl page-down   0x77 119  ctrl home
  438. 0x78 120* alt 1            0x79 121* alt 2            0x7a 122* alt 3
  439. 0x7b 123* alt 4            0x7c 124* alt 5            0x7d 125* alt 6
  440. 0x7e 126* alt 7            0x7f 127* alt 8            0x80 128* alt 9
  441. 0x81 129* alt 0            0x82 130  alt -            0x83 131  alt =
  442. 0x84 132  ctrl page-up     0x85 133  f11              0x86 134  f12
  443. 0x87 135  shift f11        0x88 136  shift f12        0x89 137  ctrl f11
  444. 0x8a 138  ctrl f12         0x8b 139  alt f11          0x8c 140  alt f12
  445. 0x8d 141  ctrl uparrow     0x8e 142  ctrl pad -       0x8f 143  ctrl pad5
  446. 0x90 144  ctrl pad +       0x91 145  ctrl downarrow   0x92 146  ctrl insert
  447. 0x93 147  ctrl delete      0x94 148  ctrl tab         0x95 149  ctrl pad /
  448. 0x96 150  ctrl pad *       0x97 151* alt home         0x98 152* alt uparrow
  449. 0x99 153  alt page-up      0x9b 155* alt leftarrow    0x9d 157* alt rightarrow
  450. 0x9f 159* alt end          0xa0 160* alt downarrow    0xa1 161  alt page-down
  451. 0xa2 162* alt insert       0xa3 163* alt delete       0xa4 164  alt pad /
  452. 0xa5 165  alt tab
  453.   Those marked '*' are bound to subroutines as AAEMACS default. Your PC must
  454. accept them, and must return the same input codes for them as in this list.
  455.   'Pad' means the right keypad. 'Pad5' means the key in the middle of the right
  456. keypad which in numlock mode produces '5'.
  457. --------------------------------------------------------------------------------
  458.   If you must alter the source form, do not auto-coerce a 'subr*' to a 'val'
  459. with Gnu C, as the result's 'val.n' will be not _subr but _buffer. This is
  460. probably due to a stray gremlin in Gnu C. Use the function 'kf()' to convert a
  461. 'subr*' to a 'val'.
  462.